package data 
{
	import flash.geom.Point;
	import flash.utils.Dictionary;
	/**
	 * Static data for items.
	 */
	public class GCItemData 
	{
		// Sample Items
		//public static const ITEM_BANANA:uint = 999;
		//public static const ITEM_APPLE:uint = 998;
		//public static const ITEM_CHERRY:uint = 997;
		//public static const ITEM_CORN:uint = 996;
		
		// Item Types
		public static const ITEM_TYPE_GENERAL:uint = 	0;	// Blank type to match all items 
		public static const ITEM_TYPE_RESOURCE:uint = 	1;
		public static const ITEM_TYPE_RECIPE:uint = 	2;
		public static const ITEM_TYPE_UPGRADE:uint = 	3;
		public static const ITEM_TYPE_SHIP_RECIPE:uint =4;
		
		// Harvestable Resources
		public static const ITEM_NULL:uint = 	0;	//A blank item
		public static const ITEM_FOOD:uint = 	1;
		public static const ITEM_LUMBER:uint = 	2;
		public static const ITEM_IRON:uint = 	3; 
		public static const ITEM_SILVER:uint = 	4;
		public static const ITEM_COPPER:uint = 	5;
		public static const ITEM_WOOL:uint = 	6;
		public static const ITEM_COTTON:uint = 	7;
		public static const ITEM_SILK:uint = 	8;
		public static const ITEM_SALT:uint = 	9;
		public static const ITEM_SPICES:uint = 	10;
		public static const ITEM_OIL:uint = 	11;
		public static const ITEM_COAL:uint = 	12;

		// Upgrades
		public static const ITEM_SAIL:uint = 			101;
		public static const ITEM_CROWS_NEST:uint = 		102;
		public static const ITEM_MOTOR:uint = 			103;
		public static const ITEM_COMPASS:uint = 		104;
		public static const ITEM_MAST:uint = 			105;
		public static const ITEM_CREW_QUARTERS:uint = 	106;
		public static const ITEM_HULL:uint = 			107;
		public static const ITEM_RUDDER:uint =			108;
		public static const ITEM_CANNON:uint =			109;
		public static const ITEM_FLAG_ONE:uint =		110;
		public static const ITEM_FLAG_TWO:uint =		111;
		public static const ITEM_FLAG_THREE:uint =		112;
		public static const ITEM_FLAG_FOUR:uint =		113;
		public static const ITEM_WHEEL:uint =			114;
		public static const ITEM_ANCHOR:uint =			115;
		
		// Recipes
		public static const ITEM_RECIPE_RUDDER:uint =		501;
		public static const ITEM_RECIPE_SAIL:uint =			502;
		public static const ITEM_RECIPE_CROWS_NEST:uint =	503;
		public static const ITEM_RECIPE_MOTOR:uint =		504;
		public static const ITEM_RECIPE_EXPANDED_HULL:uint =505;
		public static const ITEM_RECIPE_COMPASS:uint =		506;
		public static const ITEM_RECIPE_MAST:uint =			507;
		public static const ITEM_RECIPE_CREW_QUARTERS:uint = 508;
		public static const ITEM_RECIPE_CANNON:uint =		509;
		public static const ITEM_RECIPE_FLAG_ONE:uint =		510;
		public static const ITEM_RECIPE_FLAG_TWO:uint =		511;
		public static const ITEM_RECIPE_FLAG_THREE:uint =		512;
		public static const ITEM_RECIPE_FLAG_FOUR:uint =		513;
		public static const ITEM_RECIPE_WHEEL:uint =			514;
		public static const ITEM_RECIPE_ANCHOR:uint =			515;
		
		// Ship Recipes
		public static const ITEM_SHIP_RECIPE_GALLEY:uint =		1001;
		public static const ITEM_SHIP_RECIPE_BARGE:uint =		1002;
		public static const ITEM_SHIP_RECIPE_STEAMBOAT:uint =	1003;
		
		// Layer level
		public static const NOT_SHOWN:uint = 0;
		public static const TOP_LAYER:uint = 1;
		public static const BOTTOM_LAYER:uint = 2;
		
		// Stores all of the item information
		public static var _information:Dictionary;
		
		public static function initialize():void
		{
			// Setup Variables
			
			_information = new Dictionary();
			var name:String;
			var type:uint;
			var description:String;
			var struct:GCItemDataStruct;
			
			// For recipes
			var createdItem:uint;
			var ingredients:Dictionary;
			
			// For upgrades
			var enhancements:Dictionary;
			
			// Sample...
			//_information[ITEM_APPLE] = new GCItemDataStruct("Apple", ITEM_TYPE_RESOURCE, "An apple a day...");
			//_information[ITEM_BANANA] = new GCItemDataStruct("Banana", ITEM_TYPE_RESOURCE, "Banananananana");
			//_information[ITEM_CHERRY] = new GCItemDataStruct("Cherry", ITEM_TYPE_RESOURCE, "Hopefully from Rainier");
			//_information[ITEM_CORN] = new GCItemDataStruct("Corn", ITEM_TYPE_RESOURCE, "Can turn it into anything!");
			
			
			// Harvestable Resources
			
			name = "Non-existent item";
			type = ITEM_TYPE_RESOURCE;
			description = "I don't exist dumbass!";
			_information[ITEM_NULL] = new GCItemDataStruct(name, type, description);
			
			name = "Food";
			type = ITEM_TYPE_RESOURCE;
			description = "Consumed by the crew on sea journeys";
			_information[ITEM_FOOD] = new GCItemDataStruct(name, type, description);
			
			name = "Lumber";
			type = ITEM_TYPE_RESOURCE;
			description = "Used to maintain wooden ships and build wooden ships and upgrades";
			_information[ITEM_LUMBER] = new GCItemDataStruct(name, type, description);
			
			name = "Iron";
			type = ITEM_TYPE_RESOURCE;
			description = "A heavy metal used to build strong metal ships and upgrades";
			_information[ITEM_IRON] = new GCItemDataStruct(name, type, description);

			name = "Silver";
			type = ITEM_TYPE_RESOURCE;
			description = "Semi-precious metal used for intricate metalwork";
			_information[ITEM_SILVER] = new GCItemDataStruct(name, type, description);
			
			name = "Copper";
			type = ITEM_TYPE_RESOURCE;
			description = "A malleable metal used as a building material and conductor";
			_information[ITEM_COPPER] = new GCItemDataStruct(name, type, description);
			
			name = "Wool";
			type = ITEM_TYPE_RESOURCE;
			description = "Only the finest alpaca...stays warm even when wet!";
			_information[ITEM_WOOL] = new GCItemDataStruct(name, type, description);
			
			name = "Cotton";
			type = ITEM_TYPE_RESOURCE;
			description = "A cheap but very comfortable resource to make fabric";
			_information[ITEM_COTTON] = new GCItemDataStruct(name, type, description);
			
			name = "Silk";
			type = ITEM_TYPE_RESOURCE;
			description = "Painstakingly harvested from silkworms' cocoons, it makes a mean pair of socks!";
			_information[ITEM_SILK] = new GCItemDataStruct(name, type, description);
			
			name = "Salt";
			type = ITEM_TYPE_RESOURCE;
			description = "Enough salt makes even the worst meals bearable";
			_information[ITEM_SALT] = new GCItemDataStruct(name, type, description);
			
			name = "Spices";
			type = ITEM_TYPE_RESOURCE;
			description = "Really fires up your starboard cuisine";
			_information[ITEM_SPICES] = new GCItemDataStruct(name, type, description);
			
			name = "Oil";
			type = ITEM_TYPE_RESOURCE;
			description = "Thick black substance that seems to extremely flammable...";
			_information[ITEM_OIL] = new GCItemDataStruct(name, type, description);
			
			name = "Coal";
			type = ITEM_TYPE_RESOURCE;
			description = "Burns for hours!";
			_information[ITEM_COAL] = new GCItemDataStruct(name, type, description);
			
			
			// Upgrades
			
			name = "Rudder";
			type = ITEM_TYPE_UPGRADE;
			description = "Keeps your boat cruisin' straight!";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_SPEED] = 20;
			enhancements[GCShipData.STAT_NAVIGATION] = 15;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= new Point(32, 237);
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= new Point(47, 237);
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= new Point(52, 236);
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= new Point(36, 248);
			struct.layer = BOTTOM_LAYER;
			_information[ITEM_RUDDER] = struct;
			
			name = "Sail";
			type = ITEM_TYPE_UPGRADE;
			description = "Catches more wind than the standard one";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_SPEED] = 30;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= null;
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= null;
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= null;
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= null;
			struct.layer = TOP_LAYER;
			_information[ITEM_SAIL] = struct;
			
			name = "Crow's Nest";
			type = ITEM_TYPE_UPGRADE;
			description = "See further on the horizon";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_NAVIGATION] = 25;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();			
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= new Point(55, 70);
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= new Point(55, 70);
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= new Point(55, 70);
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= new Point(55, 70);
			struct.layer = TOP_LAYER;
			_information[ITEM_CROWS_NEST] = struct;
			
			name = "Motor";
			type = ITEM_TYPE_UPGRADE;
			description = "Vrrrooooomm!";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_SPEED] = 55;
			enhancements[GCShipData.STAT_FUEL_EFFICIENCY] = -10;
			enhancements[GCShipData.STAT_HULL] = -20;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();			
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= new Point(10, 200);
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= new Point(10, 200);
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= new Point(10, 200);
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= new Point(10, 200);	
			struct.layer = BOTTOM_LAYER;
			_information[ITEM_MOTOR] = struct;
			
			name = "Expanded Hull";
			type = ITEM_TYPE_UPGRADE;
			description = "Stores just about anything. Maybe not a slain kraken...";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_SLOTS] = 1;
			enhancements[GCShipData.STAT_HULL] = 30;
			enhancements[GCShipData.STAT_SPEED] = 10;
			enhancements[GCShipData.STAT_FUEL_EFFICIENCY] = -10;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();			
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= null;
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= null;
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= null;
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= null;
			struct.layer = NOT_SHOWN;
			_information[ITEM_HULL] = struct;
			
			name = "Compass";
			type = ITEM_TYPE_UPGRADE;
			description = "It tells you where da gold's at!";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_NAVIGATION] = 30;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();			
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= new Point(150, 180);
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= new Point(150, 180);
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= new Point(150, 180);
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= new Point(150, 180);
			struct.layer = TOP_LAYER;
			_information[ITEM_COMPASS] = struct;
			
			name = "Mast";
			type = ITEM_TYPE_UPGRADE;
			description = "Stands tall in the wake of danger!";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_MAINTENANCE] = 25;
			enhancements[GCShipData.STAT_DEFENSE] = 10;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();			
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= null;
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= null;
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= null;
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= null;
			struct.layer = TOP_LAYER;
			_information[ITEM_MAST] = struct;
			
			name = "Crew Quarters";
			type = ITEM_TYPE_UPGRADE;
			description = "Keep the crew happy so they will fix your ship!";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_MAINTENANCE] = 30;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();			
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= null;
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= null;
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= null;
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= null;
			struct.layer = NOT_SHOWN;
			_information[ITEM_CREW_QUARTERS] = struct;

			name = "Cannon";
			type = ITEM_TYPE_UPGRADE;
			description = "Ship go Boooom!";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_DEFENSE] = 30;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();			
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= new Point(253, 195);
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= new Point(247, 171);
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= new Point(260, 142);
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= new Point(231, 145);
			struct.layer = BOTTOM_LAYER;
			_information[ITEM_CANNON] = struct;
			
			name = "Flag 1";
			type = ITEM_TYPE_UPGRADE;
			description = "Show your colors proudly!";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_NAVIGATION] = 30;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();			
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= new Point(80, 50);
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= new Point(80, 50);
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= new Point(80, 50);
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= new Point(80, 50);
			struct.layer = TOP_LAYER;
			_information[ITEM_FLAG_ONE] = struct;
			
			name = "Flag 2";
			type = ITEM_TYPE_UPGRADE;
			description = "Show your colors proudly!";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_NAVIGATION] = 30;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();			
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= new Point(80, 50);
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= new Point(80, 50);
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= new Point(80, 50);
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= new Point(80, 50);
			struct.layer = TOP_LAYER;
			_information[ITEM_FLAG_TWO] = struct;
			
			name = "Flag 3";
			type = ITEM_TYPE_UPGRADE;
			description = "Show your colors proudly!";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_NAVIGATION] = 30;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();			
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= new Point(80, 50);
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= new Point(80, 50);
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= new Point(80, 50);
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= new Point(80, 50);
			struct.layer = TOP_LAYER;
			_information[ITEM_FLAG_THREE] = struct;
			
			name = "Flag 4";
			type = ITEM_TYPE_UPGRADE;
			description = "Show your colors proudly!";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_SPEED] = 30;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();			
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= new Point(80, 50);
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= new Point(80, 50);
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= new Point(80, 50);
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= new Point(80, 50);
			struct.layer = TOP_LAYER;
			_information[ITEM_FLAG_FOUR] = struct;
			
			name = "Wheel";
			type = ITEM_TYPE_UPGRADE;
			description = "Make your turns better, don't spin too hard though.";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_SPEED] = 30;
			enhancements[GCShipData.STAT_NAVIGATION] = 50;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();			
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= new Point(172, 210);
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= new Point(235, 177);
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= new Point(223, 152);
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= new Point(208, 148);
			struct.layer = BOTTOM_LAYER;
			_information[ITEM_WHEEL] = struct;
			
			name = "Anchor";
			type = ITEM_TYPE_UPGRADE;
			description = "Keep your ship from floating away.";
			struct = new GCItemDataStruct(name, type, description);
			enhancements = new Dictionary();
			enhancements[GCShipData.STAT_DEFENSE] = 50;
			enhancements[GCShipData.STAT_NAVIGATION] = 30;
			struct._enhancements = enhancements;
			struct._position = new Dictionary();			
			struct._position[GCShipData.SHIP_TYPE_SAILBOAT] 	= new Point(183, 233);
			struct._position[GCShipData.SHIP_TYPE_BARGE] 		= new Point(110, 225);
			struct._position[GCShipData.SHIP_TYPE_GALLEY] 		= new Point(110, 237);
			struct._position[GCShipData.SHIP_TYPE_STEAMBOAT] 	= new Point(83, 235);
			struct.layer = TOP_LAYER;
			_information[ITEM_ANCHOR] = struct;
			
			// Recipes
			
			name = "Rudder Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Creates a rudder to keep your ship cruisin'";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_LUMBER] = 5;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_RUDDER;
			_information[ITEM_RECIPE_RUDDER] = struct;
			
			name = "Sail Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Makes a big honkin' sail to catch all that wind";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_COTTON] = 20;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_SAIL;
			_information[ITEM_RECIPE_SAIL] = struct;
			
			name = "Crow's nest Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Make a crow's nest to see further on the horizon!";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_LUMBER] = 10;
			ingredients[ITEM_COTTON] = 3;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_CROWS_NEST;
			_information[ITEM_RECIPE_CROWS_NEST] = struct;
			
			name = "Motor Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Makes a device that will make you go vrrroooomm!";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_IRON] = 40;
			ingredients[ITEM_OIL] = 20;
			ingredients[ITEM_SILVER] = 20;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_MOTOR;
			_information[ITEM_RECIPE_MOTOR] = struct;
			
			name = "Expanded hull Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Makes a bigger hull to store all your goodies";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_LUMBER] = 40;
			ingredients[ITEM_IRON] = 20;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_HULL;
			_information[ITEM_RECIPE_EXPANDED_HULL] = struct;
			
			name = "Compass Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Makes a compass so you don't get lost";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_SILVER] = 30;
			ingredients[ITEM_LUMBER] = 5;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_COMPASS;
			_information[ITEM_RECIPE_COMPASS] = struct;
			
			name = "Mast Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Makes a mast to stand tall in the face of danger!";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_LUMBER] = 40;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_MAST;
			_information[ITEM_RECIPE_MAST] = struct;
			
			name = "Crew Quarters Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Better moral, better service...";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_LUMBER] = 30;
			ingredients[ITEM_SILVER] = 10;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_CREW_QUARTERS;
			_information[ITEM_RECIPE_CREW_QUARTERS] = struct;
			
			name = "Cannon Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Create a cannon to lower the boom!";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_LUMBER] = 10;
			ingredients[ITEM_SILVER] = 10;
			ingredients[ITEM_IRON] = 40;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_CANNON;
			_information[ITEM_RECIPE_CANNON] = struct;
			
			name = "Anchor Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "It brings you down, thats a good thing.";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_IRON] = 30;
			ingredients[ITEM_SILVER] = 10;
			ingredients[ITEM_COPPER] = 5;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_ANCHOR;
			_information[ITEM_RECIPE_ANCHOR] = struct;
			
			name = "Wheel Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Don't spin it too fast, you'll break it!";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_LUMBER] = 40;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_WHEEL;
			_information[ITEM_RECIPE_WHEEL] = struct;
			
			name = "Flag 1 Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Customize your ship with a flag!";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_COTTON] = 30;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_FLAG_ONE;
			_information[ITEM_RECIPE_FLAG_ONE] = struct;
			
			name = "Flag 2 Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Customize your ship with a flag!";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_COTTON] = 20;
			ingredients[ITEM_SILK] = 20;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_FLAG_TWO;
			_information[ITEM_RECIPE_FLAG_TWO] = struct;
			
			name = "Flag 3 Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Customize your ship with a flag!";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_WOOL] = 15;
			ingredients[ITEM_SILK] = 30;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_FLAG_THREE;
			_information[ITEM_RECIPE_FLAG_THREE] = struct;
			
			name = "Flag 4 Recipe";
			type = ITEM_TYPE_RECIPE;
			description = "Customize your ship with a flag!";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_WOOL] = 25;
			ingredients[ITEM_COTTON] = 15;
			struct._ingredients = ingredients;
			struct._recipeForId = ITEM_FLAG_FOUR;
			_information[ITEM_RECIPE_FLAG_FOUR] = struct;
			
			// Ship recipes
			name = "Galley Recipe";
			type = ITEM_TYPE_SHIP_RECIPE;
			description = "Bigger sails, beefier hull, ready to rock!";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_LUMBER] = 200;
			ingredients[ITEM_IRON] = 40;
			ingredients[ITEM_SILVER] = 30;
			struct._ingredients = ingredients;
			struct._recipeForId = GCShipData.SHIP_TYPE_GALLEY; // Not an item!
			_information[ITEM_SHIP_RECIPE_GALLEY] = struct;
			
			name = "Barge Recipe";
			type = ITEM_TYPE_SHIP_RECIPE;
			description = "Runs off coal to plow through the waves better with more goods";
			struct = new GCItemDataStruct(name, type, description);
			ingredients = new Dictionary();
			ingredients[ITEM_IRON] = 100;
			ingredients[ITEM_COPPER] = 100;
			ingredients[ITEM_SILVER] = 65;
			ingredients[ITEM_COAL] = 75;
			struct._ingredients = ingredients;
			struct._recipeForId = GCShipData.SHIP_TYPE_BARGE;
			_information[ITEM_SHIP_RECIPE_BARGE] = struct;
			
			name = "Steamboat Recipe";
			type = ITEM_TYPE_SHIP_RECIPE;
			description = "Hot, steamy, and cruises across even the coldest waters";
			struct = new GCItemDataStruct(name, type, description);
			ingredients[ITEM_IRON] = 250;
			ingredients[ITEM_COPPER] = 100;
			ingredients[ITEM_SILVER] = 200;
			ingredients[ITEM_OIL] = 100;
			struct._ingredients = ingredients;
			struct._recipeForId = GCShipData.SHIP_TYPE_STEAMBOAT;
			_information[ITEM_SHIP_RECIPE_STEAMBOAT] = struct;
		}
		
		public static function getNameFromId(id:uint):String
		{
			return (_information[id] as GCItemDataStruct)._name;
		}
		
		public static function getTypeFromId(id:uint):uint
		{
			return (_information[id] as GCItemDataStruct)._type;
		}
		
		/**
		 * Gets a text description of an item
		 * 
		 * @param	id
		 * @return
		 * 			A string for the description of the item.
		 */
		public static function getItemDescriptionFromId(id:uint):String
		{
			return (_information[id] as GCItemDataStruct)._description;
		}
		
		public static function getRecipeIngredientsFromId(id:uint):Dictionary
		{
			return (_information[id] as GCItemDataStruct).ingredients;
		}
		
		public static function getSynthesizedItemFromId(id:uint):uint
		{
			return (_information[id] as GCItemDataStruct).recipeForId;
		}
		
		/**
		 * Gives back the enhancements that this item bestows on a ship.
		 * 
		 * @param	id
		 * 			The id for the item, must be of type upgrade
		 * @return
		 * 			A dictionary where:
		 * 			key='type of enhancement e.g. increased capacity'
		 * 			value='value of enhancement e.g. +10'
		 * 								
		 */
		public static function getUpgradeEnhancementsFromId(id:uint):Dictionary
		{
			return (_information[id] as GCItemDataStruct).enhancements;
		}
		
		public static function getUpgradePositionFromId(id:uint, shipType:uint):Point
		{
			return (_information[id] as GCItemDataStruct)._position[shipType];
		}
	}

}